এরিথমেটিক(arithmetic), কন্ডিশনাল(conditional) এবং বিটওয়াজ(bitwise) অপারেশন সম্পন্ন করার জন্য সি প্রোগ্রামিং এ অনেক ধরণের অপারেটর(oparetor) রয়েছে। এই অধ্যায়ে আপনি বিভিন্ন ধরণের সি অপারেটর এবং এদের ব্যবহার সম্মন্ধে জানবেন।
অপারেটর এক ধরণের প্রতীক(symbol) যা ভ্যালু(value) অথবা ভ্যারিয়েবলকে অপারেট করতে পারে। উদাহরণস্বরূপঃ +(যোগ চিহ্ন) একটি অপারেটর যা যোগের কাজে ব্যবহৃত হয়।
বিভিন্ন ধরণের অপারেশন সম্পাদনের জন্য সি প্রোগ্রামিং এ অনেক ধরণের অপারেটর রয়েছে। ভালভাবে বুঝার জন্য অপারেটরসমূহকে নিম্নোক্ত উপায়ে বিভক্ত করা যায়ঃ
এরিথমেটিক অপারেটর গাণিতিক হিসাব নিকাশ যেমন- যোগ, বিয়োগ, গুন এবং ভাগ ইত্যাদি কার্য সম্পন্ন করে।
অপারেটর | অপারেটেরের অর্থ | উদাহরণ(int a=11, b=5) | ফলাফল |
---|---|---|---|
+ | যোগ বা ইউনারী(unary) যোগ | a + b | 16 |
- | বিয়োগ বা ইউনারী বিয়োগ | a - b | 6 |
* | গুন | a * b | 55 |
/ | ভাগ | a / b | 2 |
% | ভাগের পরে ফলাফল ভাগশেষ(মডিউলো অপারেটর) | a % b | 1 |
kt_satt_skill_example_id=115
+, - এবং * অপারেটর সঠিকভাবে যথাক্রমে যোগ, বিয়োগ এবং গুন করে।
সাধারনভাবে আপনি যদি 11 কে 5 (11/5
)দিয় ভাগ করেন তাহলে ভাগফল পাবেন 2.2। কিন্তু আমাদের প্রোগ্রামের আউটপুট 2 পাওয়া গেছে।
কারণ উভয় ভ্যারিয়েবলের টাইপ ইন্টেজার। তাই আউটপুটও ইন্টেজার হয়েছে। কম্পাইলার দশমিক সংখ্যার দশমিকের পরের অংশকে কেটে ফেলেছে ফলে ফলাফল 2.2 এর পরিবর্তে 2 হয়েছে।
মডিউলো অপারেটর % এর মাধ্যমে ভাগশেষ পাওয়া যায়। উপরের উদাহরণে a = 11
কে b = 5
দিয়ে ভাগ করায় ভাগশেষ 1 পাওয়া গেছে। শুধুমাত্র ইন্টেজারের ক্ষেত্রেই % অপারেটর ব্যবহৃত হয়।
ধরুন a = 10.0, b = 4.0, c = 10 এবং d = 4 তাহলে সি প্রোগ্রামিং a/b = 2.5 //কারণ উভয় অপারেন্ড ফ্লোটিং পয়েন্ট ভ্যারিয়েবল। a/d = 2.5 //কারণ একটি অপারেন্ড ফ্লোটিং পয়েন্ট ভ্যারিয়েবল। c/b = 2.5 //কারণ একটি অপারেন্ড ফ্লোটিং পয়েন্ট ভ্যারিয়েবল। c/d = 2 // কারণ উভয় অপারেন্ড ইন্টেজার ভ্যারিয়েবল।
কনস্ট্যান্ট অথবা ভ্যারিয়েবলের অপারেন্ডেকে ১ করে বৃদ্ধি বা হ্রাসের জন্য সি প্রোগ্রামিং এ যথাক্রমে দুটি অপারেটর আছে একটি হলো ইনক্রিমেন্ট(increment) ++ এবং অপরটি হলো ডিক্রিমেন্ট(decrement) --।
ইনক্রিমেন্ট অপারেটর ভ্যারিয়েবলের ভ্যালু এক করে বৃদ্ধি করে পক্ষান্তরে ডিক্রিমেন্ট অপারেটর ভ্যালু এক করে হ্রাস করে। এই দুটি অপারেটরকে ইউনারী(unary) অপারেটর বলা হয় কারণ এরা সিঙ্গেল অপারেন্ডকে অপারেট করতে পারে।
kt_satt_skill_example_id=99
এখানে অপারেটর ++ এবং -- প্রিফিক্স(prefix) হিসাবে ব্যবহৃত হয়েছে। এই অপারেটর দুটি পোস্টফিক্স(postfix) হিসাবেও ব্যবহৃত হতে পারে। যেমন- a++
এবং a--
। ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর সম্বন্ধে আরোও জানতে সি প্রোগ্রামে ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর অধ্যায় ভিজিট করুন।
ভ্যারিয়েবলে ভ্যালু এসাইন করা বা জমা রাখার জন্য এসাইনমেন্ট(assignment) অপারেটর ব্যবহৃত হয়। সবচেয়ে বেশী ব্যবহৃত এসাইনমেন্ট অপারেটর হলো =
অপারেটর | উদাহরন(int a=11, b=5) | একই রকম | ফলাফল |
---|---|---|---|
= | a = b | a = b | 5 |
+= | a += b | a = a+b | 16 |
-= | a -= b | a = a-b | 6 |
*= | a *= b | a = a*b | 55 |
/= | a /= b | a = a/b | 2 |
%= | a %= b | a = a%b | 1 |
kt_satt_skill_example_id=100
সি প্রোগ্রামিং এ রিলেশনাল অপারেটর(relational operator) দুটি অপারেন্ডের মধ্যে সম্পর্ক যাচাই করে। রিলেশন সত্যি(true) হলে 1 রিটার্ন করে; রিলেশন মিথ্যা(false) হলে 0 রিটার্ন করে।
সিদ্ধান্ত গ্রহণ(decision making) এবং লুপ(loop) এ রিলেশনাল অপারেটর ব্যবহৃত হয়।
অপারেটর | অপারেটরের অর্থ | উদাহরণ(int a=11, b=5) | ফলাফল |
---|---|---|---|
== | Equal to | a == b | False |
> | Greater than | a > b | True |
< | Less than | a < b | False |
!= | Not equal to | a != b | True |
>= | Greater than or equal to | a >= b | True |
<= | Less than or equal to | a <= b | False |
kt_satt_skill_example_id=101
সি প্রোগ্রামিং এ &&, || এবং ! অপারেটরসমূহকে লজিক্যাল(Logial) অপারেটর বলা হয়। সি প্রোগ্রামিং এ সিদ্ধান্ত গ্রহণে(in decision making ) সচারচর লজিক্যাল অপারেটর ব্যবহৃত হয়।
অপারেটর | অপারেটরের অর্থ | উদাহরণ(int a=11, b=5, c =15) | ফলাফল |
---|---|---|---|
&& | Logial AND - উভয় অপারেন্ড true হলে True | (a==b) && (b>c) | True |
|| | Logical OR - যেকোনো একটি অপারেন্ড true হলে True | (b==c) || (a>c) | False |
! | Logical NOT - অপারেন্ড false হলে True | !(b==c) | True |
kt_satt_skill_example_id=103
উপরের উদাহরণের ব্যাখ্যা
(a = b)
এবং (c > b)
উভয় অপারেন্ড true হওয়ায় (a = b) && (c > 5)
এর ফলাফল 1 হয়েছে।(c < b)
এর ভ্যালু false হওয়ায় (a = b) && (c < b)
এর ফলাফল 0 হয়েছে।(a = b)
এর ভ্যালু true হওয়ায় (a = b) || (c < b)
এর ফলাফল 1 হয়েছে।(a != b)
এবং (c < b)
উভয় অপারেন্ড false হওয়ায় (a != b) || (c < b)
এর ফলাফল 0 হয়েছে।(a != b)
এর ভ্যালু false হওয়ায় !(a != b)
এর ফলাফল 1 হয়েছে। কারণ !(a != b) এর ভ্যালু true।(a == b)
এর ভ্যালু true হওয়ায় !(a == b)
এর ফলাফল 0 হয়েছে। কারণ !(a == b)
এর ভ্যালু false।হিসাব নিকাশের সময় গাণিতিক অপারেশন যেমন- যোগ, বিয়োগ, গুণ এবং ভাগ বিট-লেভেলে রূপান্তরিত হলে দ্রুত প্রোসেসিং হয় এবং শক্তি(power) সংরক্ষিত হয়।
সি প্রোগ্রামিং এ বিট-লেভেল অপারেশন সম্পন্ন করার জন্য বিটওয়াইজ(Bitwise) অপারেটর ব্যবহৃত হয়।
মনেকরি, নিচের টেবিলে x = 10 (বাইনারিতে 0000 1010) এবং y = 4 (বাইনারিতে 0000 0100)
অপারেটর | অপারেটরের অর্থ | উদাহরণ(x=10 এবং y=4) | ফলাফল |
---|---|---|---|
& | Bitwise AND | x& y = 0 (0000 0000) | 0 |
| | Bitwise OR | x | y = 14 (0000 1110) | 14 |
^ | Bitwise exclusive OR | x ^ y = 14 (0000 1110) | 14 |
~ | Bitwise complement | ~x = -11 (1111 0101) | -11 |
<< | Shift left | x<< 2 = 42 (0010 1000) | 42 |
>> | Shift right | x>> 2 = 2 (0000 0010) | 2 |
বিটওয়াইজ অপারেটর সম্মন্ধে আরোও জানতে আমাদের সি বিটওয়াইজ অপারেটর অধ্যায় ভিজিট করুন
সম্পর্কযুক্ত এক্সপ্রেশনসমূহকে একইসঙ্গে ডিক্লেয়ার(declare) করার জন্য কমা(comma) অপারেটর ব্যবহৃত হয়। উদাহরনস্বরুপঃ
int a, b = 10, c = 5, d;
sizeof
অপারেটর হলো ইউনারী অপারেটর যা ডেটা যেমন- কনস্ট্যান্ট, ভ্যারিয়েবল, অ্যারে, স্ট্রাকচার ইত্যাদির সাইজ রিটার্ন করে
sizeof(variable)
যখন কোনো অপারেটর তিনটি অপারেন্ড(oparend) নিয়ে কাজ করে তাকে টারনারী(ternary) অপারেটর বলে। টারনারী অপারেটর দেখতে ?:
এমন। টারনারী অপারেটরকে কন্ডিশনাল অপারেটরও বলা হয়।
কন্ডিশনাল অপারেটরের কাজের ধাপ নিম্নে বর্ণনা করা হলোঃ
উপরের সিনট্যাক্সে বুলিয়ান এক্সপ্রেশন হলো কন্ডিশন এবং true part ও false part হয় ভ্যালু অথবা ভ্যারিয়েবল অথবা স্টেটমেন্ট অথবা যেকোনো গাণিতিক এক্সপ্রেশন হতে পারে। কন্ডিশন True হলে True part সম্পাদিত হয় অন্যথায় false part সম্পাদিত হয়।
kt_satt_skill_example_id=106
অন্যান্য অপারেটর যেমন- রেফারেন্স(reference) অপারেটর(&), ডিরেফারেন্স(dereference) অপারেটর(*) এবং মেম্বার(member) সিলেকশন অপারেটর (->) সি পয়েন্টার অধ্যায়ে আলোচনা করা হয়েছে।
common.read_more